package com.xbongbong.paas.service.workflow.setting;

import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowConditionDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowDynamicManagerDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowFilterConditionFieldDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowInsertNodeOperatorFieldDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowOperatorFieldDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowSortFieldDTO;
import com.xbongbong.paas.pojo.workflow.explains.dto.WorkflowTitleFieldDTO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowConditionVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowDynamicManagerVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowFilterConditionFieldVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowOperatorFieldVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowSortFieldVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowSourceOperatorFieldVO;
import com.xbongbong.paas.pojo.workflow.explains.vo.WorkflowTitleFieldVO;
import com.xbongbong.paas.toolbox.exception.XbbException;

/**
 * @author 吴峰
 * @date 2021/05/25 14:58
 */
public interface WorkflowExplainService {


    /**
     * 条件节点中，可作为条件的字段
     * @param workflowConditionDTO
     * @return com.xbongbong.workflow.pojo.explains.vo.WorkflowConditionVO
     * @author 吴峰
     * @date 2021/5/25 21:12
     * @throws XbbException
     */
    WorkflowConditionVO conditionNodeFieldList(WorkflowConditionDTO workflowConditionDTO) throws XbbException;

    /**
     * 获取排序字段
     * @param workflowSortFieldDTO
     * @return
     * @throws XbbException
     */
    WorkflowSortFieldVO sortFieldList(WorkflowSortFieldDTO workflowSortFieldDTO) throws XbbException;


    /**
     * 新建节点/更新节点获取需要更新的来源字段
     * @param workflowInsertNodeOperatorFieldDTO
     * @return
     * @throws XbbException
     */
    WorkflowSourceOperatorFieldVO sourceOperatorField(WorkflowInsertNodeOperatorFieldDTO workflowInsertNodeOperatorFieldDTO) throws XbbException;


    /**
     * 新建节点/更新节点获取需要更新的字段
     * @param workflowOperatorFieldDTO
     * @return
     * @throws XbbException
     */
    WorkflowOperatorFieldVO getOperatorField(WorkflowOperatorFieldDTO workflowOperatorFieldDTO) throws XbbException;

    /**
     * 获取审批标题的字段
     * @param workflowTitleFieldDTO
     * @return com.xbongbong.workflow.pojo.explains.vo.WorkflowTitleFieldVO
     * @author 吴峰
     * @date 2021/6/1 16:46
     * @throws XbbException
     */
    WorkflowTitleFieldVO getTitleField(WorkflowTitleFieldDTO workflowTitleFieldDTO) throws XbbException;

    /**
     * 获取过滤条件
     * @param workflowFilterConditionFieldDTO
     * @return
     * @throws XbbException
     */
    WorkflowFilterConditionFieldVO getFilterConditionField(WorkflowFilterConditionFieldDTO workflowFilterConditionFieldDTO) throws XbbException;

    /**
     * 获取工作流动态值
     * @param workflowDynamicManagerDTO
     * @return com.xbongbong.workflow.pojo.explains.vo.WorkflowDynamicManagerVO
     * @author 吴峰
     * @date 2021/7/12 15:36
     * @throws XbbException
     */
    WorkflowDynamicManagerVO dynamicManager(WorkflowDynamicManagerDTO workflowDynamicManagerDTO) throws XbbException;
}
